package tests;

import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import javabeans.Usuario;
import junit.framework.TestCase;
import filecontrol.UsuarioFDAO;

public class TestaUsuarioFDAO extends TestCase {
	
	UsuarioFDAO us;
	Usuario s1;
	Usuario s2;
	
	public void setUp() throws Exception{
		us = UsuarioFDAO.getInstancia();
		s1 = configuraUsuario("jose", "jose", "1122", "0011", "ze", "32211554", "computacao", "estudante");
		s2 = configuraUsuario("jose1", "jose1", "11221", "00111", "ze1", "322115541", "eletrica", "professor");
		us.adicionaUsuario(s1);
		us.adicionaUsuario(s2);
	}
	
	
	public void testBuscaPorLogin() throws Exception{
		assertEquals(s1.getCpf(), us.buscaUsuarioPorLogin(s1.getLogin()).getCpf());
		assertNull(us.buscaUsuarioPorLogin("Finazzi"));
	}
	
	public void testBuscaPorNome() throws Exception{
		List<Usuario> l = new LinkedList<Usuario>();
		l.add(s1);
		
		assertEquals(l, us.buscaUsuarioPorNome(s1.getNome()));
		assertEquals(0, us.buscaUsuarioPorNome("Finazzi").size());
	}
	
	public void testBuscaPorMAtricula() throws Exception{
		assertEquals(s1.getCpf(), us.buscaUsuarioPorMatricula(s1.getMatricula()).getCpf());
		assertNull(us.buscaUsuarioPorMatricula("0"));
	}
	
	public void testBuscaPorSetor() throws Exception{
		List<Usuario> l = new LinkedList<Usuario>();
		l.add(s1);
		
		assertEquals(l, us.buscaUsuarioPorSetor("computacao"));
		assertEquals(0, us.buscaUsuarioPorSetor("civil").size());
	}
	
	public void testBuscaPorCategoria() throws Exception{
		List<Usuario> l = new LinkedList<Usuario>();
		l.add(s1);
		
		assertEquals(l, us.buscaUsuarioPorCategoria("estudante"));
		assertEquals(0, us.buscaUsuarioPorSetor("professor").size());
	}
	
	
	private Usuario configuraUsuario(String login, String senha, String matricula, String cpf, String nome, String telefone, 
			String setor, String categoria) {
		
		Usuario user = new Usuario(); 
		user.setLogin(login);
		user.setSenha(senha);
		user.setMatricula(matricula);
		user.setCpf(cpf);
		user.setNome(nome);
		user.setTelefone(telefone);
		user.setSetor(setor);
		user.setCategoria(categoria);
		return user;
	}

}

